package proyectosdservidor;

import java.awt.List;
import java.net.*;

public class WorkerThread extends Thread{

    public static final int COMM_BUFFER_SIZE = 255;
	
    private DatagramPacket _packet = null;
	
    private boolean _done = false;

    private List consola;

    /**
     * Representa una lista para almacenar los datos que se reciben de cliente.
     */
    private Registros registros;

    
    public boolean isOverFlow(){
        return registros.isOverFlow();
    }

	
    public WorkerThread(DatagramPacket packet, List consola){
        _packet = packet;
        this.consola = consola;
        this.registros = new Registros();
    }

    public String getClientInfo()
    {
        return _packet.getAddress() + ":" + _packet.getPort();
    }
	
    boolean isDone(){
        return _done;
    }
	
    @Override
    public void run(){
		
	try{
            String msg = new String(_packet.getData());

            String[] datos = msg.split(":");
            String RID = datos[0];
            String registro = datos[1];

            //Insertamos los datos en la lista
            if(!this.registros.isOverFlow()){
                consola.add("<" + getClientInfo() + "> dice: " + RID + ";" + registro);
                this.registros.insertar(RID, registro);
            }else{
                consola.add("<" + getClientInfo() + "> dice: El servidor está lleno. El registro " + RID + " se ha direccionado.");
            }
        }catch (Exception ex){
            ex.printStackTrace();
	}
    }


}
